package org.dudemonkey.jvm.concurrency.chp1;

import java.util.concurrent.FutureTask;

public class FutureTaskMain {
    /**
     * 2020年5月11日
     * future task 主线程被阻塞？
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Main "+ Thread.currentThread().getName());
        FutureTask<String> ft = new FutureTask<>(new CallerTask());
//        System.out.println(FutureTaskMain.class.getClass().getName()+" is running  "+Thread.currentThread().getName());
        new Thread(ft).start();
        try {
            // 根据实验，若要获得result，则会阻塞main线程。
            // 想想应该是对的，main线程要获得子线程的结果，肯定是需要等其结束
            String s = ft.get();
            System.out.println("Print future task result : "+s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Main done" );
    }
}
